package hxy.bytecode;

import lombok.extern.slf4j.Slf4j;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * @author eric
 * @date 10/24/19 9:55 PM
 */
@Slf4j
public class App {

    public void hello(String a) {
        System.out.println("Hello");
    }

    public void hello2(String a) {
        System.out.println("Hello");
    }

    public static void main(String[] args) {
        System.out.println("HelloWorld");
    }

    private static void javaClassVersion() {
        String canonicalName = App.class.getCanonicalName();
        String classPathSeparate = "/";
        String extension = ".class";
        String path = App.class.getResource(classPathSeparate + canonicalName.replace(".", classPathSeparate) + extension).getPath();
        File file = new File(path);
        try {
            checkClassVersion(file);
        } catch (IOException e) {
            log.error("\n====>{}", e.getMessage(), e);
        }
    }

    private static void checkClassVersion(File classFile)
            throws IOException {
        DataInputStream in = new DataInputStream(new FileInputStream(classFile));

        int magic = in.readInt();
        int java = 0xcafebabe;
        if (magic != java) {
            log.error("\n====>{} is not a valid class!", classFile.getName());
        }
        int minor = in.readUnsignedShort();
        int major = in.readUnsignedShort();
        log.info("\n<============   {}文件的编译器版本:{}.{}   ============>", classFile.getName(), major, minor);
        in.close();
    }
}
